package com.spring.demo.untils.dto.request;

import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Author doudou.wk
 * @Date 2022/7/12
 * @Description Bimis备血申请单
 **/
@Data
public class HisBloodApplyDTO implements Serializable {

    private static final long serialVersionUID = 6224133176965199710L;

    /**
     * 申请单号
     */
    @NotBlank
    @ApiModelProperty(value = "申请单号",required = true)
    private String applyNo;

    /**
     * 孕次
     */
    @ApiModelProperty(value = "孕次")
    private Integer pregnancyNum;

    /**
     * 产次
     */
    @ApiModelProperty(value = "产次")
    private Integer childbirthNum;

    /**
     * 血液产品 ID（数据同步）
     */
    @ApiModelProperty(value = "血液产品 ID（数据同步）",required = true)
    private Long bloodProductId;

    /**
     * 用血量
     */
    @ApiModelProperty(value = "用血量", required = true)
    private BigDecimal intendedBloodVolume;

    /**
     * 特殊要求
     */
    @ApiModelProperty(value = "特殊要求",required = true)
    private String specialRequirements;

    /**
     * 大量用血原因
     */
    @ApiModelProperty(value = "大量用血原因")
    private String massiveTransfusionReason;

    /**
     * 拟用血时间
     */
    private String transfusionTime;

    /**
     * 是否筛查
     * 1-筛查 0-不筛查
     */
    @ApiModelProperty(value = "是否筛查",required = true)
    private Integer isScreening;

    /**
     * 不筛查原因
     */
    @ApiModelProperty(value = "不筛查原因")
    private String isScreeningReason;

    /**
     * 患者血型 ABO 类型编码
     *
     * @see com.c2f.hbos.dtc.client.apply.constants.surgeryform.AboBloodTypeEnum
     */
    @NotBlank
    @ApiModelProperty(value = "患者血型 ABO 类型编码",required = true)
    private String patientBloodGroupAboCode;

    /**
     * 患者血液 RHD 类型编码
     *
     * @see com.c2f.hbos.dtc.client.apply.constants.surgeryform.RhBloodTypeEnum
     */
    @NotBlank
    @ApiModelProperty(value = "患者血液 RHD 类型编码",required = true)
    private String patientBloodGroupRhdCode;

    /**
     * 输血史编码（FH0199）
     */
    @NotBlank
    @ApiModelProperty(value = "申请单号",required = true)
    private String transfusionHistoryCode;

    /**
     * 输血反应史编码（FH0200）
     */
    @ApiModelProperty(value = "输血反应史编码（FH0200）")
    private String transfusionReactionHistoryCode;

    /**
     * 妊娠史编码（FH0201）
     */
    @ApiModelProperty(value = "妊娠史编码（FH0201）")
    private String gestationHistoryCode;

    /**
     * 血液单位编码（FH0207）
     */
    @NotBlank
    @ApiModelProperty(value = "血液单位编码（FH0207）",required = true)
    private String bloodUnitCode;

    /**
     * 加工要求编码列表
     */
    @ApiModelProperty(value = "加工要求编码列表")
    private List<String> machiningRequirementCodeList;

    /**
     * 申请类型编码
     *
     * @see com.c2f.hbos.dtc.client.apply.constants.BloodApplyTypeEnum
     */
    @NotBlank
    @ApiModelProperty(value = "申请类型编码",required = true)
    private String applyTypeCode;

    /**
     * 输血目的编码列表（FH0233）
     */
    @ApiModelProperty(value = "输血目的编码列表（FH0233)",required = true)
    private List<String> transfusionPurposeCodeList;

    /**
     * 用血类型编码（FH0202）
     */
    @NotBlank
    @ApiModelProperty(value = "用血类型编码（FH0202）",required = true)
    private String transfusionTypeCode;

    /**
     * 血液分类 ID
     */
    @ApiModelProperty(value = " 血液分类 ID")
    private Long bloodClassifyId;

    /**
     * 血液分类
     */
    @ApiModelProperty(value = "血液分类")
    private String bloodClassify;

    /**
     * 筛查项目 itemIdList
     */
    @ApiModelProperty(value = "筛查项目 itemIdList")
    private List<Long> screeningItemIdList;

    /**
     * 配血项目 itemIdList
     */
    @ApiModelProperty(value = "配血项目 itemIdList")
    private List<Long> matchItemIdList;

    /**
     * 执行地点
     */
    @ApiModelProperty(value = "执行地点")
    private Long executiveAreaId;

    /**
     * 执行地点名称
     */
    @ApiModelProperty(value = "执行地点名称")
    private String executiveAreaName;
}
